package com.yang.exception;


import com.yang.utils.JsonResult;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;

/**
 * @Author 杨天可
 * @Date 2021/6/10 15:10
 * @Version 1.0
 */

@ControllerAdvice   //将当前类作为全局异常的总处理入口，将作用在所有注解了@RequestMapping的控制器的方法上
@ResponseBody

public class ExceptionController {


    //    将异常记录到日志文件
    @ExceptionHandler(Throwable.class)
    public Map handler(Exception e){
        JsonResult jsonResult = new JsonResult();
        if (e instanceof BusinessException){
            jsonResult.setCode("400");
            jsonResult.setMsg(e.getMessage());
        }else {
            jsonResult.setCode("500");
            jsonResult.setMsg("系统开小差了,请稍后再试!");
            //springboot开发的程序，打成jar包,在服务器中运行
            //挂起: nohup java -jar sell1.jar&
            //把异常信息记录到nohup.out文件中
            SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日 HH小时mm分钟ss秒");

            System.out.println("-------------------"+format.format(new Date())+"-------------------");
//            System.out.println(e.toString());  //异常发生的类型和原因
            //如果项目上线，可以不打印栈信息，否则会导致nohup.out文件变得很大
            e.printStackTrace();
        }
        return jsonResult.getValues();
    }


}
